import request from '@/utils/request'

/**
 * 标签相关API
 */
export default {
  /**
   * 获取标签列表
   * @param {Object} params - 查询参数
   * @returns {Promise}
   */
  getTags(params) {
    return request({
      url: '/tags',
      method: 'get',
      params
    })
  },

  /**
   * 获取标签详情
   * @param {Number|String} id - 标签ID
   * @returns {Promise}
   */
  getTag(id) {
    return request({
      url: `/tags/${id}`,
      method: 'get'
    })
  },

  /**
   * 创建标签
   * @param {Object} data - 标签数据
   * @returns {Promise}
   */
  createTag(data) {
    return request({
      url: '/tags',
      method: 'post',
      data
    })
  },

  /**
   * 更新标签
   * @param {Number|String} id - 标签ID
   * @param {Object} data - 标签数据
   * @returns {Promise}
   */
  updateTag(id, data) {
    return request({
      url: `/tags/${id}`,
      method: 'put',
      data
    })
  },

  /**
   * 删除标签
   * @param {Number|String} id - 标签ID
   * @returns {Promise}
   */
  deleteTag(id) {
    return request({
      url: `/tags/${id}`,
      method: 'delete'
    })
  },

  /**
   * 获取标签下的单词
   * @param {Number|String} id - 标签ID
   * @param {Object} params - 查询参数
   * @returns {Promise}
   */
  getTagWords(id, params) {
    return request({
      url: `/tags/${id}/words`,
      method: 'get',
      params
    })
  },

  /**
   * 添加单词到标签
   * @param {Number|String} tagId - 标签ID
   * @param {Object} data - 单词数据
   * @returns {Promise}
   */
  addWordToTag(tagId, data) {
    return request({
      url: `/tags/${tagId}/words`,
      method: 'post',
      data
    })
  },

  /**
   * 从标签中移除单词
   * @param {Number|String} tagId - 标签ID
   * @param {Number|String} wordId - 单词ID
   * @returns {Promise}
   */
  removeWordFromTag(tagId, wordId) {
    return request({
      url: `/tags/${tagId}/words/${wordId}`,
      method: 'delete'
    })
  },

  /**
   * 获取单词的所有标签
   * @param {Number|String} wordId - 单词ID
   * @returns {Promise}
   */
  getWordTags(wordId) {
    return request({
      url: `/words/${wordId}/tags`,
      method: 'get'
    })
  },

  /**
   * 获取热门标签
   * @param {Object} params - 查询参数
   * @returns {Promise}
   */
  getPopularTags(params) {
    return request({
      url: '/tags/popular',
      method: 'get',
      params
    })
  },

  /**
   * 获取用户创建的标签
   * @param {Number|String} userId - 用户ID
   * @param {Object} params - 查询参数
   * @returns {Promise}
   */
  getUserTags(userId, params) {
    return request({
      url: `/users/${userId}/tags`,
      method: 'get',
      params
    })
  }
} 